package com.sws.common.utils;

import java.security.SecureRandom;
import java.util.UUID;

/**
 * PID生成器工具类
 * 用于生成符合要求的随机PID：整数形式的字符串，最大不超过2的64次方
 */
public class PidGeneratorUtil {
    
    private static final SecureRandom random = new SecureRandom();
    
    /**
     * 生成随机PID
     * 整数形式的字符串，且最大不超过2^64
     * 
     * @return 随机生成的PID字符串
     */
    public static String generatePid() {
        // 使用19位数字，确保小于2^64 (2^64约等于1.8 * 10^19)
        // 确保第一位不为0，生成1-9的随机数
        int firstDigit = random.nextInt(9) + 1;
        
        // 生成剩余18位数字(0-9)
        StringBuilder sb = new StringBuilder();
        sb.append(firstDigit);
        
        for (int i = 0; i < 18; i++) {
            sb.append(random.nextInt(10));
        }
        
        return sb.toString();
    }
    
    /**
     * 生成带前缀的随机PID
     * 
     * @param prefix 前缀字符串
     * @return 带前缀的随机PID
     */
    public static String generatePidWithPrefix(String prefix) {
        return prefix + generatePid();
    }
    
    /**
     * 生成更短的随机PID (10位数字)
     * 适用于对长度有限制的场景
     * 
     * @return 10位随机PID
     */
    public static String generateShortPid() {
        // 确保第一位不为0
        int firstDigit = random.nextInt(9) + 1;
        
        StringBuilder sb = new StringBuilder();
        sb.append(firstDigit);
        
        // 生成剩余9位
        for (int i = 0; i < 9; i++) {
            sb.append(random.nextInt(10));
        }
        
        return sb.toString();
    }
} 